#include <stddef.h>
#ifndef N2LIB_BUILDE_H_7701445D00B97ACB31D9BCE53FFE7AB7
#define N2LIB_BUILDE_H_7701445D00B97ACB31D9BCE53FFE7AB7  1

typedef struct {
    unsigned int    st_name;        // Symbol name
    unsigned int    st_value;       // Symbol value
    unsigned int    st_size;        // Size of object (e.g., common) 
    unsigned char   st_info;        // Type and Binding attributes 
    unsigned char   st_other;       // Reserved 
    unsigned short  st_shndx;       // Section table index 
} StdElf32Sym_t;

typedef struct
{
    unsigned int    st_name;        // Symbol name
    unsigned char   st_info;        // Type and Binding attributes 
    unsigned char   st_other;       // Reserved 
    unsigned short  st_shndx;       // Section table index 
    n2ulong_t       st_value;       // Symbol value 
    n2ulong_t       st_size;        // Size of object (e.g., common) 
} StdElf64Sym_t;

typedef struct {
    unsigned short  e_type;
    unsigned short  e_machine;
    unsigned int    e_version;
    unsigned int    e_entry;
    unsigned int    e_phoff;
    unsigned int    e_shoff;
    unsigned int    e_flags;
    unsigned short  e_ehsize;
    unsigned short  e_phentsize;
    unsigned short  e_phnum;
    unsigned short  e_shentsize;
    unsigned short  e_shnum;
    unsigned short  e_shstrndx;
} StdElf32Header_t;

typedef struct
{
    unsigned short  e_type;         // Object file type 
    unsigned short  e_machine;      // Machine type 
    unsigned int    e_version;      // Object file version 
    n2ulong_t       e_entry;        // Entry point address 
    n2ulong_t       e_phoff;        // Program header offset 
    n2ulong_t       e_shoff;        // Section header offset 
    unsigned int    e_flags;        // Processor-specific flags 
    unsigned short  e_ehsize;       // ELF header size 
    unsigned short  e_phentsize;    // Size of program header entry 
    unsigned short  e_phnum;        // Number of program header entries 
    unsigned short  e_shentsize;    // Size of section header entry 
    unsigned short  e_shnum;        // Number of section header entries 
    unsigned short  e_shstrndx;     // Section name string table index 
} StdElf64Header_t;

typedef struct {
    unsigned int    sh_name;
    unsigned int    sh_type;
    unsigned int    sh_flags;
    unsigned int    sh_addr;
    unsigned int    sh_offset;
    unsigned int    sh_size;
    unsigned int    sh_link;
    unsigned int    sh_info;
    unsigned int    sh_addralign;
    unsigned int    sh_entsize;
} StdElf32SecHead_t;

typedef struct
{
    unsigned int    sh_name;        // Section name 
    unsigned int    sh_type;        // Section type 
    n2ulong_t       sh_flags;       // Section attributes 
    n2ulong_t       sh_addr;        // Virtual address in memory 
    n2ulong_t       sh_offset;      // Offset in file 
    n2ulong_t       sh_size;        // Size of section 
    unsigned int    sh_link;        // Link to other section 
    unsigned int    sh_info;        // Miscellaneous information 
    n2ulong_t       sh_addralign;   // Address alignment boundary 
    n2ulong_t       sh_entsize;     // Size of entries, if section has table 
} StdElf64SecHead_t;

typedef struct {
    char            ident[6];
    unsigned char   version;
    unsigned char   endian;
    unsigned char   class1;
    unsigned char   osabi;
    unsigned short  machine;
    char            reserve[4];
    char            endianstr[14];
    char            reserve2[2];
}n2libisign_t;

typedef struct 
{
    char            rtype[4];
    unsigned        reserve;
    n2ulong_t       rname;
    n2ulong_t       rsize;
    n2ulong_t       rtime;
}n2libirech_t;

void build_lib();




#endif // !N2LIB_BUILDE_H_7701445D00B97ACB31D9BCE53FFE7AB7



